Solid-state drives (SSDs) may be used in computers in applications where relatively low latency and high capacity storage are desired. Additionally, SSDs may utilize multiple, parallel data channels to read from and write to memory devices, which may result in high sequential read and write speeds. SSDs may utilize NAND flash memory cells that can only be directly written to when erased. If the cells contain data, that data must be erased before a write operation. An SSD can write to a single page, but can only erase an entire block. To overwrite a page, the contents of the data block must be read and stored in a cache, the data block erased, the overwritten page written to the cached block, and the cached block written to the data block.
When a user initiates a delete operation, the operating system may flag the corresponding logical address as no longer being associated with valid data. However, the operating system may not communicate this to the SSD, so the SSD may not be alerted that data blocks associated with the logical address no longer store valid data.
The operating system may utilize a trim or unmap command to notify the SSD which logical addresses no longer are associated with valid data. This may enable the SSD to erase blocks of data associated with the logical addresses, with the timing being controlled by the controller of the SSD. This may reduce the number of writes on the SSD, increase write speed, and increase drive life.